package ar.edu.utn.frba.dds.opendesigners.dominio;

import java.util.ArrayList;
import java.util.List;

import org.uqbar.commons.model.Entity;
import org.uqbar.commons.utils.Observable;
import org.uqbar.commons.utils.Transactional;

import ar.edu.utn.frba.dds.opendesigners.resultados.Asiento;
import ar.edu.utn.frba.dds.opendesigners.resultados.AsientoGridItem;
import ar.edu.utn.frba.dds.opendesigners.user.Usuario;

@SuppressWarnings("serial")
@Transactional
@Observable
public class GestionUsuario extends Entity{
	private Usuario usuario;
	private List<AsientoGridItem> compras;
	private List<AsientoGridItem> reservas;
	
	public GestionUsuario(Usuario usuario){
		this.usuario = usuario;
		//Cargo el historial actual de compras
		this.actualizarCompras();
		//Cargo el historial actual de reservas
		this.actualizarReservas();
	}
	
	public String  getNombre() {
		return usuario.getNombre();
	}
	
	public String getApellido() {
		return usuario.getApellido();
	}
	
	public Usuario getUsuario(){
		return this.usuario;
	}
	
	private List<AsientoGridItem> convertirAsientos(List<Asiento> historial) {
		List<AsientoGridItem> asientos = new ArrayList<AsientoGridItem>();
		try {
			
			for (Asiento item : historial) {
				AsientoGridItem asiento = new AsientoGridItem();
				asiento.setFechaSalida(item.getFechaSalida());
				asiento.setNombreAerolinea(item.getNombreAerolinea());
				asiento.setNumeroAsiento(item.getNumeroAsiento());
				asiento.setPrecio(item.getPrecio());
				asiento.setNumeroVuelo(item.getNumeroVuelo());
				asientos.add(asiento);
			}
			return asientos;

		} catch (NullPointerException nula) {
			return asientos;
		}
	}

	public List<AsientoGridItem> getCompras() {
		return this.compras;
	}

	public void setCompras(List<Asiento> compras) {
		this.compras = this.convertirAsientos(compras);
	}

	public List<AsientoGridItem> getReservas() {
		return this.reservas;
	}

	public void actualizarCompras() {
		this.setCompras( this.getUsuario().getCompras().getHistorial() );
	}
	
	public void actualizarReservas() {
		this.setReservas( this.getUsuario().getReservas().getHistorial() );
	}

	public void setReservas(List<Asiento> reservas) {
		this.reservas = this.convertirAsientos(reservas);
	}
	
}
